<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.org/ui"
                template="/WEB-INF/template.xhtml">

    <ui:define name="head">
        <script type="text/javascript">
            function handleDrop(event, ui) {
                var droppedCar = ui.draggable;

                droppedCar.fadeOut('fast');
            }
        </script>
    </ui:define>

    <ui:define name="title">
        DragDrop - <span class="subitem">DataGrid</span>
    </ui:define>

    <ui:define name="description">
        DragDrop components have special integration with data components. Drag the cars using the headers to the drop area.
    </ui:define>

    <ui:define name="implementation">

        <h:form id="carForm">
            <p:fieldset id="availableCarsField" legend="AvailableCars">
                <p:dataGrid id="availableCars" var="car" value="#{dndCarsView.cars}" columns="3">
                    <p:panel id="pnl" header="#{car.id}" style="text-align:center">
                        <h:panelGrid columns="1" style="width:100%">
                            <p:graphicImage name="/demo/images/car/#{car.brand}.gif" />
                        </h:panelGrid>
                    </p:panel>

                    <p:draggable for="pnl" revert="true" handle=".ui-panel-titlebar" stack=".ui-panel"/>
                </p:dataGrid>
            </p:fieldset>

            <p:fieldset id="selectedCars" legend="Selected Cars" style="margin-top:20px">
                <p:outputPanel id="dropArea">
                    <h:outputText value="!!!Drop here!!!" rendered="#{empty dndCarsView.droppedCars}" style="font-size:24px;" />
                    <p:dataTable id="selectedCarsTable" var="car" value="#{dndCarsView.droppedCars}" rendered="#{not empty dndCarsView.droppedCars}">
                        <p:column headerText="Id">
                            <h:outputText value="#{car.id}" />
                        </p:column>

                        <p:column headerText="Year">
                            <h:outputText value="#{car.year}" />
                        </p:column>

                        <p:column headerText="Brand">
                            <h:outputText value="#{car.brand}" />
                        </p:column>

                        <p:column headerText="Color">
                            <h:outputText value="#{car.color}" />
                        </p:column>

                        <p:column style="width:32px">
                            <p:commandButton update=":carForm:display" oncomplete="PF('carDialog').show()" icon="pi pi-search">
                                <f:setPropertyActionListener value="#{car}" target="#{dndCarsView.selectedCar}" />
                            </p:commandButton>
                        </p:column>
                    </p:dataTable>
                </p:outputPanel>
            </p:fieldset>

            <p:droppable for="selectedCars" tolerance="touch" activeStyleClass="ui-state-highlight" datasource="availableCars" onDrop="handleDrop">
                <p:ajax listener="#{dndCarsView.onCarDrop}" update="dropArea availableCars" />
            </p:droppable>

            <p:dialog header="Car Detail" widgetVar="carDialog" resizable="false" draggable="false"
                      showEffect="fade" hideEffect="fade" modal="true">

                <p:outputPanel id="display">
                    <h:panelGrid columns="2" cellpadding="5" rendered="#{not empty dndCarsView.selectedCar}">
                        <f:facet name="header">
                            <p:graphicImage name="/demo/images/car/#{dndCarsView.selectedCar.brand}.gif"/>
                        </f:facet>

                        <h:outputText value="Id" />
                        <h:outputText value="#{dndCarsView.selectedCar.id}" style="font-weight:bold"/>

                        <h:outputText value="Year:" />
                        <h:outputText value="#{dndCarsView.selectedCar.year}" style="font-weight:bold"/>

                        <h:outputText value="Brand" />
                        <h:outputText value="#{dndCarsView.selectedCar.brand}" style="font-weight:bold"/>

                        <h:outputText value="Color:" />
                        <h:outputText value="#{dndCarsView.selectedCar.color}" style="font-weight:bold"/>
                    </h:panelGrid>
                </p:outputPanel>
            </p:dialog>
        </h:form>

    </ui:define>

</ui:composition>